package com.hongji.lms5xxcommunicator.storage;

import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import javax.annotation.PostConstruct;

/**
 * 会话ID（epoch）管理：
 *  - 默认 auto：进程启动生成一个新 epoch（毫秒时间戳）
 *  - fixed：使用固定值（用于重放或跨进程继续写同一会话）
 */
@Slf4j
@Component
public class EpochManager {

    @Value("${storage.epoch.mode:auto}") // auto | fixed
    private String mode;

    @Value("${storage.epoch.fixed:0}")
    private long fixedEpoch;

    @Getter
    private long current;

    @PostConstruct
    public void init() {
        if ("fixed".equalsIgnoreCase(mode) && fixedEpoch > 0) {
            current = fixedEpoch;
            log.warn("[Epoch] 使用固定 epoch = {}", current);
        } else {
            current = System.currentTimeMillis();
            log.info("[Epoch] 生成新的 epoch = {}", current);
        }
    }
}
